1. Technical Field
The present disclosure relates to encryption and more specifically to executing encrypted binaries in a secure fashion.
2. Introduction
Reverse engineering is used to understand the internal workings of computer programs. Protecting software execution algorithms or processed values are part of the challenges of Digital Rights Management implementations on open operating systems. Executable code of a computer program is, in certain cases, crucial to protect. Given the binary in its original form, malicious parties can statically disassemble, analyze, and patch the binary to their liking by simply overwriting select portions of the binary. Attackers can also steal important data such as cryptographic information or credentials.
Furthermore, after an attacker has produced a modified binary, the attacker can easily share and/or distribute the modified binary for execution on different machines. Existing approaches can slow this process, but can be overcome with specialized tools. In order to strengthen binaries of computer programs against attackers, any improvement in hiding code and ensuring that the code cannot be easily modified, in addition to protection provided by traditional encryption approaches, can provide important security benefits to software publishers as well as to users.